package net.servir.diagnostico.web.controller;

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.servir.diagnostico.model.IdentificacionParticipante;
import net.servir.diagnostico.model.Resultados;
import net.servir.diagnostico.model.Test;
import net.servir.diagnostico.model.TestGenerado;
import net.servir.diagnostico.model.jsp.JspResultado;
import net.servir.diagnostico.service.DiagnosticoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ResultadosController
{

  @Autowired
  private DiagnosticoService diagnosticoService;

  @RequestMapping({"/resultados.htm"})
  @ModelAttribute("resultado")
  public JspResultado ObtenerResultados(HttpServletRequest request, HttpServletResponse response)
  {
    HttpSession session = request.getSession();
    JspResultado obj = new JspResultado();

    Number idTest = Integer.valueOf(0);
    Integer filtroSoloEvaluados = 0;
    List IdentificacionParticipantes = null;
//    System.out.println("(request.getParameter(\"idTest\") = "+request.getParameter("idTest"));
    if (request.getParameter("idTest") != null) {
      idTest = Integer.valueOf(Integer.parseInt(request.getParameter("idTest")));
    }
    if (request.getParameter("filtro") != null) {
    	filtroSoloEvaluados = Integer.valueOf(Integer.parseInt(request.getParameter("filtro")));
      }
    IdentificacionParticipantes = this.diagnosticoService.getTestGenerados(idTest,filtroSoloEvaluados);
    //public TestGenerado getTestGenerado(Number idTestGenerado);
    String fechaExamen = "";
    Test test = this.diagnosticoService.obtenerTest(idTest);
    Format formatter = new SimpleDateFormat(" dd MMMM yyyy");
    if (test == null)
    	return obj;
    fechaExamen = formatter.format(test.getFhInicio());

    List resultadosGenerales = new ArrayList();

    Iterator iterator = IdentificacionParticipantes.iterator();
    while (iterator
      .hasNext()) {
      IdentificacionParticipante identificacionParticipante = 
        (IdentificacionParticipante)iterator
        .next();
      //System.out.println("identificacionParticipante:" + identificacionParticipante);
      Resultados resultados = new Resultados();
      resultados.setIdentificacionParticipante(this.diagnosticoService.getIdentificacionParticipante(identificacionParticipante.getId_participante()));
      resultados.setPorcentajeAprob(this.diagnosticoService.obtenerPorcentajeAprobRRHH(identificacionParticipante.getId_test_generado()));
      resultados.setResultados(this.diagnosticoService.obtenerResultadosRRHH(identificacionParticipante.getId_test_generado(), true));
      resultados.setResultados_generales(this.diagnosticoService.obtenerResultadosRRHH_General(identificacionParticipante.getId_test_generado(), true));
      /*Se agregan los nuevos campo total preguntas y preguntas correctas*/
      resultados.setTotalCorrectas(diagnosticoService.getTotalRespuestasCorrectas(identificacionParticipante.getId_test_generado()));
      resultados.setTotalPreguntas(diagnosticoService.getTotalPreguntas(identificacionParticipante.getId_test_generado()));
      resultadosGenerales.add(resultados);
    }
    obj.setResultados(resultadosGenerales);
    obj.setFecha_examen(fechaExamen);
    return obj;
  }
}